//
//  main.m
//  base_m_14_block补充
//
//  Created by China Dragon on 2023/7/8.
//

#import <Foundation/Foundation.h>

int sum(int a, int b){
    return a + b;
}


void test(){
    // insert code here...
    int (^Sum)(int, int) = ^(int a, int b){
        return a + b;
    };
    
    //block
    int c =Sum(1, 4);
    
    NSLog(@"block c  = %i",c);
    
    //函数
     c = sum(2, 4);
    NSLog(@"函数 c  = %i",c);
    
    //指针
    int (*sump) (int , int) = sum;
    c = (*sump)(3,6);
    NSLog(@"指针 c  = %i",c);
}

typedef char *  String;

void test1(){
    //定义了Sum类型的block
    typedef int (^Sum)(int, int);
    
    //定义了sump这种指针类型，这种指针是指向函数的
    typedef int (*Sump)(int, int);
    
    
    /*
        block 和 指针函数 只有一个符号的差别：^表示block ， *指针
     */
    
    //定义了一个block类型的变量
    Sum sum1 = ^(int a, int b){
        return a + b;
    };
    
    int c = sum1(1, 8);
    
    NSLog(@"sum1 结果 c  = %i",c);
    
    //定义一个指针变量 p 指向 sum 函数
    Sump p = sum;
//    c = (*p)(10,6);
    c = p(10,6);
    NSLog(@"p 结果 c  = %i",c);
}




int main(int argc, const char * argv[]) {
    @autoreleasepool {
     
        
        test1();
       
        
        
        
        
    }
    return 0;
}
